const app = getApp();

Page({
  data: {
    hide: app.globalData.hide,
    gameAnimation: null, //转盘动画
    gameState: false,   // 游戏状态
    gameModal: false,   // 模态框控制状态
    luckDrawCount: 3,  //  抽奖次数
    gameModalData: {},  //  奖品modal显示的数据（抽奖结果数据）
    rotateZPositionCount: 0, // 当前转盘的rotateZ 值
    preUseRotateZ: 0,           // 上一次已抽奖中奖奖品的RotateZ
    prize: [
      // 一等奖 || 免单
      {
        title: '手气不错哟～恭喜获得',         // 奖品辩题
        prize: '免单',                      // 中奖内容
        invalid_date: '请在2025.01.01前使用' // 失效日期
      },
      // 二等奖 || 9.5折优惠券
      {
        title: '手气不错哟～恭喜获得',         // 奖品辩题
        prize: '9.5折优惠券',               // 中奖内容
        invalid_date: '请在2025.01.01前使用' // 失效日期
      },
      // 三等奖 || 免服务费
      {
        title: '手气不错哟～恭喜获得',        // 奖品辩题
        prize: '免服务费',                  // 中奖内容
        invalid_date: '请在2025.01.01前使用'// 失效日期
      },
      // 四等奖 || 10元代金券
      {
        title: '手气不错哟～恭喜获得',         // 奖品辩题
        prize: '10元代金券',                 // 中奖内容
        invalid_date: '请在2025.01.01前使用' // 失效日期
      },
      // 五等奖 || 5元代金券
      {
        title: '手气不错哟～恭喜获得',        // 奖品辩题
        prize: '5元代金券',                 // 中奖内容
        invalid_date: '请在2025.01.01前使用'// 失效日期
      },
    ]
  },

  onLoad() { },

  // 点击立即使用按钮
  actionBtn() {
    wx.showToast({
      title: '暂时不能使用',
      icon: 'none'
    });
    console.log('去向'); // 抽中奖可以重定向到其他页面，如业务办理，商品购买页面
    this.closeModal(); // 关闭模态框
  },
  // 关闭模态框
  closeModal() {
    this.setData({
      gameModal: false
    })
  },
  // 打开模态框
  showModal() {
    this.setData({
      gameModal: true
    })
  },
  // 奖品设置 传入一个奖项，0，1，2，3，4， 分别是12345等奖
  prizeData(grade) {
    const { prize } = this.data;
    return prize[grade]; // 返回奖品数据
  },
  // 开始游戏
  gameAction() {
    // 模拟抽奖
    var rotateZPositionIndex = Math.round(Math.random() * 4)
    // 判断游戏是否进行中
    if (this.data.gameState) return;
    this.setData({
      gameState: true
    })
    // 判断是否还有抽奖资格
    if (this.data.luckDrawCount <= 0) {
      wx.showToast({
        title: 'Sorry 您没有抽奖机会了',
        icon: 'none',
      });
      return;
    }
    this.gameAnimationRun(rotateZPositionIndex);

  },
  // 游戏实现部分
  gameAnimationRun(rotateZPositionIndex) {

    // 奖品指针位置20 一等奖，290二等奖，200，三等奖， 110 四等奖，68 五等奖，
    // 计算归着，每次抽奖最终rotateZ值 + 相应的奖品值位置 = (rotateZCount + rotateZPosition[0]) 等于一等奖
    var rotateZPosition = [20, 290, 200, 110, 68];

    var rotateZ = 360;     // 一圈360deg
    var rotateZCount = 10; // 旋转圈数的倍数
    /// 转盘位置计算规则 一圈360deg 乘以 10圈，加上 奖品 rotateZ值，再减去上一次中奖rotateZ值
    var toRotateZCount = (this.data.rotateZPositionCount - this.data.preUseRotateZ + rotateZPosition[rotateZPositionIndex]) + rotateZ * rotateZCount; // 达到圈数位置
    console.log(toRotateZCount);
    var animation = wx.createAnimation({ // 动画实例
      duration: 3000, // 动画持续5秒
      delay: 0,
      timeFunction: 'ease', // 由慢-加快-降速停止
    });
    animation.rotateZ(toRotateZCount).step();
    this.setData({
      gameState: true,
      gameAnimation: animation.export()
    })

    // 设置状态
    setTimeout(() => {
      this.showModal();   // 当转盘停止显示模态框显示抽奖结果
      this.setData({
        preUseRotateZ: rotateZPosition[rotateZPositionIndex], // 上一次奖品
        rotateZPositionCount: toRotateZCount,              // 记录当前转盘rotateZ 值
        luckDrawCount: this.data.luckDrawCount - 1,          // 抽奖次数减一
        gameState: false,                                   // 将转盘状态切换为可抽奖
        gameModalData: this.prizeData(rotateZPositionIndex) // 设置奖品数据
      })
    }, 3000)
  }
});
